all: web_server #all代表默认目标，输入make命令会默认编译web_server
CC=g++
#-c表示只编译而不链接
CFLAG=-Wall -c 
OBJS=main.o echo.o tcpserver.o acceptor.o\
	 channel.o epoller.o eventloop.o  tcpconnectionptr.o\
	 eventloopthreadpool.o eventloopthread.o thread.o $(TFLAG)
TFLAG=-lpthread

# $^ 表示所有依赖文件
web_server:$(OBJS)
	$(CC) $^ -o $@

# $<表示:右边所依赖文件的第一个文件   $@表示目标文件
main.o:main.cc eventloop.h address.h echo.h
	$(CC) $(CFLAG) $< -o $@

channel.o:channel.cc channel.h
	$(CC) $(CFLAG) $< -o $@

epoller.o:epoller.cc epoller.h channel.h
	$(CC) $(CFLAG) $< -o $@

echo.o:echo.cc echo.h tcpserver.h
	$(CC) $(CFLAG) $< -o $@

tcpserver.o:tcpserver.cc tcpserver.h acceptor.h tcpconnectionptr.h eventloopthreadpool.h
	$(CC) $(CFLAG) $< -o $@

acceptor.o:acceptor.cc acceptor.h address.h channel.h
	$(CC) $(CFLAG) $< -o $@



eventloop.o:eventloop.cc eventloop.h channel.h mutex.h
	$(CC) $(CFLAG) $< -o $@

eventloopthreadpool.o:eventloopthreadpool.cc eventloopthreadpool.h eventloopthread.h
	$(CC) $(CFLAG) $< -o $@

eventloopthread.o:eventloopthread.cc eventloopthreadpool.h mutex.h\
					condition.h eventloop.h
	$(CC) $(CFLAG) $< -o $@

thread.o:thread.cc thread.h latch.h
	$(CC) $(CFLAG) $< -o $@


tcpconnectionptr.o:tcpconnectionptr.cc tcpconnectionptr.h channel.h
	$(CC) $(CFLAG) $< -o $@

.PHONY:clean
clean:
	rm *.o
